home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 4076 / 4076.xpi / chrome / addthis.jar / content / Preferences.js < prev    next >
Encoding:
JavaScript  |  2010-01-06  |  12.9 KB  |  400 lines

  1. var AddThis_Preferences = {
  2.     
  3.     initPreferences: function()
  4.     {
  5.         AddThis_Util.dbg("initPreferences: go...");
  6.         
  7.         this.browserWindow = this._getBrowser();
  8.         AddThis_Preferences._initServicePreferences();
  9.         AddThis_Preferences._initDisplayPreferences();
  10.         
  11.         if (AddThis_Preferences.isSearchPartner()) {
  12.             AddThis_Preferences.hideSearchOption();
  13.         } else {
  14.             AddThis_Preferences.setAddThisSearchButton();
  15.         }
  16.         
  17.         AddThis_Util.dbg("initPreferences: done");
  18.     
  19.     },
  20.     
  21.     _initServicePreferences: function()
  22.     {
  23.         AddThis_Util.dbg("_initServicePreferences");
  24.         
  25.         var allcontainer = document.getElementById("at_prefs_list_all"),
  26.             activecontainer = document.getElementById("at_prefs_list_active"),
  27.             activeServices = AddThis_Util.getActiveServicesObject();
  28.         
  29.         var serviceId, newItem;
  30.         
  31.         
  32.         while(allcontainer.firstChild) allcontainer.removeChild(allcontainer.firstChild);
  33.         while(activecontainer.firstChild) activecontainer.removeChild(activecontainer.firstChild);
  34.         
  35.         for(serviceId in AddThis_Constants.services)
  36.         {
  37.             if (typeof activeServices[serviceId] !== "undefined" && activeServices[serviceId] === true) {
  38.                 continue;
  39.             }
  40.             
  41.             
  42.             newItem = document.createElement("listitem");
  43.             newItem.setAttribute("serviceid",serviceId);
  44.             newItem.setAttribute("class","listitem-iconic");
  45.             newItem.setAttribute("label", AddThis_Constants.services[serviceId].title);
  46.             newItem.setAttribute("image","chrome://addthis/skin/services/"+serviceId+".gif");
  47.             
  48.             allcontainer.appendChild(newItem);
  49.         }
  50.         
  51.         for(serviceId in activeServices)
  52.         {
  53.             
  54.             newItem = document.createElement("listitem");
  55.             newItem.setAttribute("serviceid",serviceId);
  56.             newItem.setAttribute("class","listitem-iconic");
  57.             newItem.setAttribute("label", AddThis_Constants.services[serviceId].title);
  58.             newItem.setAttribute("image","chrome://addthis/skin/services/"+serviceId+".gif");
  59.             
  60.             activecontainer.appendChild(newItem);
  61.         }
  62.     },
  63.     
  64.     _initDisplayPreferences: function()
  65.     {
  66.         AddThis_Util.dbg("_initDisplayPreferences");
  67.         
  68.         var cbxUrlbar = document.getElementById("at_prefs_showurlbar");
  69.         cbxUrlbar.checked = AddThis_UrlBar.isVisible(this.browserWindow.document);
  70.         var cbxToolbar = document.getElementById("at_prefs_showtoolbar");
  71.         cbxToolbar.checked = AddThis_Toolbar.isVisible(this.browserWindow.document);
  72.         var cbxButton = document.getElementById("at_prefs_showbutton");
  73.         cbxButton.checked = AddThis_MainButton.isVisible(this.browserWindow.document);
  74.         var radToolbarStyle = document.getElementById("at_prefs_toolbarstyle"),
  75.             tbs = AddThis_Util.getStringPref('extensions.addthis.toolbar.buttonstyle', "icons");
  76.         radToolbarStyle.selectedIndex = (tbs == "text" ? 1 : (tbs == "full" ? 2 : 0));
  77.     },
  78.     
  79.     _getBrowser: function()
  80.     {
  81.         var b = (opener == null) ? false : AddThis_Preferences._checkOpenersForBrowser(opener);
  82.         if (b === false)
  83.         {
  84.             
  85.             b = Components.classes["@mozilla.org/appshell/window-mediator;1"]
  86.                    .getService(Components.interfaces.nsIWindowMediator)
  87.                    .getMostRecentWindow("navigator:browser");
  88.         }
  89.         return b;
  90.     },
  91.     
  92.     _checkOpenersForBrowser: function(win)
  93.     {
  94.         if (win.location.href.indexOf("browser.xul") !== -1)
  95.         {
  96.             return win;
  97.         }
  98.         else if (win.opener != null)
  99.         {
  100.             return this._checkOpenersForBrowser(win.opener);
  101.         }
  102.         else
  103.         {
  104.             return false;
  105.         }
  106.         
  107.     },
  108.  
  109.     updateServicePrefs: function()
  110.     {
  111.         AddThis_Util.dbg('updateServicePrefs: updating...');
  112.         
  113.         var l = document.getElementById('at_prefs_list_active');
  114.            
  115.         var i, services = [];
  116.         for(i=0; i < l.childNodes.length; i++)
  117.         {
  118.             services.push(l.childNodes[i].getAttribute('serviceid'));
  119.         }
  120.         
  121.         var serviceInclude = services.join(',');
  122.         AddThis_Util.setStringPref('extensions.addthis.service.personal', serviceInclude);
  123.         AddThis_Util.dbg('...' + serviceInclude);
  124.         this.browserWindow.AddThis_Toolbar.setServices();
  125.  
  126.         
  127.     },
  128.     
  129.     resetServicePrefs: function()
  130.     {
  131.         var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
  132.                                 .getService(Components.interfaces.nsIPromptService);
  133.         
  134.         if(prompts.confirm(window,"","Are you sure you want to restore the default list of services? Any additional services you selected will be removed."))
  135.         {
  136.             AddThis_Util.loadServiceDefaults();
  137.             AddThis_Preferences._initServicePreferences();
  138.             this.browserWindow.AddThis_Toolbar.setServices();
  139.  
  140.         }
  141.         
  142.     },
  143.     
  144.     updateToolbarPref: function()
  145.     {
  146.         var t = document.getElementById('at_prefs_showtoolbar');
  147.         AddThis_Toolbar.setVisibility(t.checked,this.browserWindow.document);
  148.     },
  149.     
  150.     updateToolbarButtonStylePref: function()
  151.     {
  152.         var i = document.getElementById('at_prefs_toolbarstyle');
  153.         AddThis_Util.setStringPref('extensions.addthis.toolbar.buttonstyle', i.selectedItem.value);
  154.         this.browserWindow.AddThis_Toolbar.setButtonStyle();
  155.  
  156.     },
  157.     
  158.     updateButtonPref: function()
  159.     {
  160.         var b = document.getElementById('at_prefs_showbutton');
  161.         AddThis_MainButton.setVisibility(b.checked,this.browserWindow.document);
  162.         window.focus(); 
  163.     },
  164.     
  165.     updateUrlbarPref: function()
  166.     {
  167.         var t = document.getElementById('at_prefs_showurlbar');
  168.         AddThis_Util.setBooleanPref('extensions.addthis.urlbar.disable',!t.checked);
  169.         AddThis_UrlBar.setVisibility(t.checked,this.browserWindow.document);
  170.     },
  171.     
  172.     setDefaultSearch: function()
  173.     {
  174.         AddThis_Util.setStringPref("browser.search.defaultenginename", AddThis_Constants.SEARCH_PLUGIN);
  175.         AddThis_Util.setStringPref("keyword.URL", AddThis_Search.getUrl());
  176.         
  177.     },
  178.     
  179.     resetDefaultSearch: function()
  180.     {
  181.         AddThis_Util.clearPref("browser.search.defaultenginename");
  182.         AddThis_Util.clearPref("keyword.URL");
  183.     },
  184.     
  185.     allListSelect: function()
  186.     {
  187.         var a = document.getElementById('btnAdd'),
  188.             l = document.getElementById('at_prefs_list_all');
  189.         a.disabled = (l.selectedCount == 0);
  190.     },
  191.     
  192.     isSearchPartner: function()
  193.     {
  194.         var domain = "search.yahoo.com";
  195.         return (AddThis_Util.getStringPref("keyword.URL","").indexOf(domain) > 0);
  196.     },
  197.     
  198.     hideSearchOption: function()
  199.     {
  200.         var e = document.getElementById("at_prefs_search_container");
  201.         e.hidden = true;
  202.     },
  203.     
  204.     setAddThisSearchButton: function(disable)
  205.     {
  206.         if (typeof disable == 'undefined')
  207.         {
  208.             disable = AddThis_Search.isVisible();
  209.         }
  210.         else disable = (disable === true);
  211.         var b = document.getElementById('at_prefs_search_addthis');
  212.         b.disabled = disable;
  213.  
  214.     },
  215.     
  216.     activeListSelect: function()
  217.     {
  218.         var r = document.getElementById('btnRemove'),
  219.             u = document.getElementById('btnUp'),
  220.             d = document.getElementById('btnDown'),
  221.             l = document.getElementById('at_prefs_list_active');
  222.         
  223.         if (l.selectedCount == 0) {
  224.                 u.disabled = d.disabled = r.disabled = true;
  225.         } else if (l.selectedCount == 1) {
  226.                 u.disabled = (l.selectedIndex == 0);
  227.                 d.disabled = (l.selectedIndex == l.childNodes.length - 1);
  228.                 r.disabled = false;
  229.         } else {
  230.                 u.disabled = d.disabled = true;
  231.                 r.disabled = false;
  232.         }
  233.     },
  234.     
  235.     addService: function()
  236.     {
  237.         var ll = document.getElementById('at_prefs_list_all'),
  238.             lc = document.getElementById('at_prefs_list_active');
  239.             
  240.         var li;
  241.         while(ll.selectedItems.length > 0)
  242.         {
  243.             li = ll.selectedItems[0];
  244.             ll.removeChild(li);
  245.             lc.appendChild(li);
  246.         }
  247.         
  248.         AddThis_Preferences.updateServicePrefs();
  249.     },
  250.     
  251.     removeService: function()
  252.     {
  253.         
  254.         var ll = document.getElementById('at_prefs_list_all'),
  255.             lc = document.getElementById('at_prefs_list_active');
  256.             
  257.         var li;
  258.         while(lc.selectedItems.length > 0)
  259.         {
  260.             li = lc.selectedItems[0];
  261.             lc.removeChild(li);
  262.             ll.appendChild(li);
  263.         }
  264.         
  265.         AddThis_Preferences._sortList(ll);
  266.         
  267.         AddThis_Preferences.updateServicePrefs();
  268.     },
  269.     
  270.     moveServiceUp: function()
  271.     {
  272.         var l = document.getElementById('at_prefs_list_active'),
  273.             i = l.selectedItem,
  274.             pi = i.previousSibling;
  275.         l.insertBefore(i,pi);
  276.         l.selectedItem = i;
  277.         
  278.         AddThis_Preferences.updateServicePrefs();
  279.     },
  280.     
  281.     moveServiceDown: function()
  282.     {
  283.         var l = document.getElementById('at_prefs_list_active'),
  284.             i = l.selectedItem,
  285.             ni = i.nextSibling;
  286.         l.insertBefore(i,ni.nextSibling);
  287.         l.selectedItem = i;
  288.         
  289.         AddThis_Preferences.updateServicePrefs();
  290.     },
  291.     
  292.     filterServices: function(event)
  293.     {
  294.         var la = document.getElementById('at_prefs_list_all'),
  295.             lh = document.getElementById('at_prefs_list_hidden'),
  296.             fname = document.getElementById('at_prefs_filtername'),
  297.             fcat = document.getElementById('at_prefs_filtercat_menu'),
  298.             nam = fname.value.toLowerCase();
  299.             
  300.         
  301.         var cat = "", i,
  302.             mi = fcat.getElementsByTagName('menuitem');
  303.         for(i=0;i<mi.length;i++)
  304.         {
  305.             if(mi[i].hasAttribute('checked'))
  306.             {
  307.                 cat = mi[i].value;
  308.                 break;
  309.             }
  310.         }
  311.         
  312.         
  313.         while(lh.firstChild)
  314.         {
  315.             la.appendChild(lh.removeChild(lh.firstChild));
  316.         }
  317.         
  318.         var resetNam = (nam=="") , resetCat = (cat=="");
  319.         var li, ls, lv, hide;
  320.         for(i=0;i<la.childNodes.length;i++)
  321.         {
  322.             li = la.childNodes[i];
  323.             serviceid = li.getAttribute('serviceid');
  324.             label = li.getAttribute('label').toLowerCase();
  325.             if ((!resetCat && AddThis_Constants.services[serviceid].cat != cat) ||
  326.                 (!resetNam && serviceid.indexOf(nam)==-1 && label.indexOf(nam)==-1))
  327.             {
  328.                 lh.appendChild(la.removeChild(li));
  329.                 i--; 
  330.             }
  331.         }
  332.         
  333.         AddThis_Preferences._sortList(la);
  334.        
  335.     },
  336.     
  337.     blurList: function(d)
  338.     {
  339.         var l = document.getElementById('at_prefs_list_'+d);
  340.         l.selectedIndex = -1;
  341.     },
  342.     
  343.     _sortList: function(l) {
  344.         var nodes = [];
  345.         while(l.firstChild)
  346.         {
  347.             nodes.push(l.removeChild(l.firstChild));
  348.         }
  349.         
  350.         nodes.sort(AddThis_Preferences._sortli);
  351.         
  352.         var i;
  353.         for(i=0;i<nodes.length;i++)
  354.         {
  355.             l.appendChild(nodes[i]);
  356.         }
  357.     },
  358.     
  359.     _sortli: function(a,b)
  360.     {
  361.         var aa = a.getAttribute('label').toLowerCase(),
  362.             bb = b.getAttribute('label').toLowerCase();
  363.         return (aa==bb) ? 0 : (aa < bb ? -1 : 1);
  364.     },
  365.     
  366.     initWelcome: function()
  367.     {
  368.  
  369.         this.browserWindow = this._getBrowser();
  370.         
  371.         if (AddThis_Preferences.isSearchPartner()) AddThis_Preferences.hideSearchOption();
  372.         
  373.         var cbxToolbar = document.getElementById("at_prefs_showtoolbar");
  374.         cbxToolbar.checked = AddThis_Toolbar.isVisible(this.browserWindow.document);
  375.         var cbxButton = document.getElementById("at_prefs_showbutton");
  376.         cbxButton.checked = AddThis_MainButton.isVisible(this.browserWindow.document);
  377.         var cbxContext = document.getElementById("at_prefs_showcontextmenu");
  378.         cbxContext.checked = !AddThis_Util.getBooleanPref('extensions.addthis.contextmenu.disable',false);
  379.         var cbxUrlbar = document.getElementById("at_prefs_showurlbar");
  380.         cbxUrlbar.checked = !AddThis_Util.getBooleanPref('extensions.addthis.urlbar.disable',false);
  381.     },
  382.     
  383.     processWelcome: function()
  384.     {
  385.         AddThis_Preferences.updateToolbarPref();
  386.         AddThis_Preferences.updateButtonPref();
  387.         var cbxContext = document.getElementById("at_prefs_showcontextmenu");
  388.         AddThis_Util.setBooleanPref('extensions.addthis.contextmenu.disable',!cbxContext.checked);
  389.         AddThis_Preferences.updateUrlbarPref();
  390.         
  391.         if (!AddThis_Preferences.isSearchPartner())
  392.         {
  393.             var cbxSearch = document.getElementById("at_prefs_search");
  394.             if (cbxSearch.checked) AddThis_Preferences.setDefaultSearch();
  395.         }
  396.         
  397.         return true;
  398.     }
  399.  
  400. };